The US Geological Survey and the Philippine Institute of Volcanology and Seismology said the quake struck at 7:55 pm (1155 GMT), its epicentre about 41 kilometres (25 miles) east of the town of General Luna on Mindanao island.
It had a relatively shallow depth, measured at 24 kilometres by the US agency - and 19 kilometres by the local quake monitors - but the latter said in an advisory that it was not expected to have caused damage.